Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling
Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling
- Publicatiedatum:
- 18-06-2026
- Inwerkingtreding:
- 18-06-2026
18.2 Wat is de winst- en verliesrekening o.b.v. Grootboek?
Concepten
Relaties
Eigenschappen
SPARQL query
Code gekopieerd
...Kopieer naar klembord
1# Indicator: Zorgkantoren 18.2.0 - Complete versie met R en S totalen 2# Parameters: ?startperiode, ?eindperiode 3# Ontologie: versie 3.0.0 of nieuwer 4# 5# Deze query berekent de winst- en verliesrekening obv Prismant of RGS grootboekrubrieken. 6# Structuur: 3 delen via UNION die alle jaarrekeningposten + subtotalen genereren 7 8PREFIX onz-fin: <http://purl.org/ozo/onz-fin#> 9PREFIX onz-g: <http://purl.org/ozo/onz-g#> 10PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 11 12SELECT 13 ?jaarrekeningpost 14 (IF(SUM(?heeftData)>0, SUM(?bedrag_rubriek), "Niet beschikbaar") AS ?bedrag) 15WHERE 16{ 17 { 18 # ================================================================ 19 # DEEL 1: Berekening eindtotalen P, Q, R, S uit ruwe grootboekdata 20 ## deze berekening lijkt misschien overbodig omdat je ook de subposten uit deel 2 zou kunnen optellen, 21 ## alleen die kunnen theoretisch leeg zijn wat tot reken problemen leidt. Vandaar deze pragmatische keuze 22 # ================================================================ 23 { 24 # Bereken alle componentbedragen in één database scan voor performance 25 SELECT 26 (SUM(?p_bedrag) AS ?p_totaal) # P Som der bedrijfsopbrengsten 27 (SUM(?q_bedrag) AS ?q_totaal) # Q Som der bedrijfslasten 28 (SUM(?r_bedrag) AS ?r_totaal) # R.I Opbrengst van vorderingen die tot de vaste activa behoren en van effecten 29 (SUM(?s_bedrag) AS ?s_totaal) # S.I Belastingen 30 31 (SUM(?p_flag) AS ?p_has_data) 32 (SUM(?q_flag) AS ?q_has_data) 33 (SUM(?r_flag) AS ?r_has_data) 34 (SUM(?s_flag) AS ?s_has_data) 35 WHERE { 36 #BIND("2024-01-01"^^xsd:date AS ?startperiode) 37 #BIND("2024-12-31"^^xsd:date AS ?eindperiode) 38 39 # Koppel grootboekposten aan rubrieken binnen meetperiode 40 ?grootboek_post a onz-fin:Grootboekpost ; 41 onz-g:partOf ?rubriek ; 42 onz-g:hasDate ?datum ; 43 onz-fin:heeftGeldBedrag ?geld_bedrag . 44 45 # Match directe ouder: Grootboekrekening (RGS) of Grootboekrubriek (Prismant) 46 { 47 { ?rubriek a onz-fin:Grootboekrekening } 48 UNION 49 { ?rubriek a onz-fin:Grootboekrubriek } 50 } 51 # Anti-dubbeltelling: houd alleen het bladniveau (geen transitive ancestors) 52 FILTER NOT EXISTS { 53 ?grootboek_post onz-g:partOf ?child . 54 ?child onz-g:partOf ?rubriek . 55 FILTER(?child != ?rubriek) 56 { { ?child a onz-fin:Grootboekrekening } UNION { ?child a onz-fin:Grootboekrubriek } } 57 } 58 FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:))) 59 BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode) 60 61 FILTER (?datum >= ?startperiode && ?datum <= ?eindperiode) 62 63 # In deel 2 worden de subposten pas berekend, hier alleen nog op letter niveau 64 65 # --- P: Bedragen voor eindtotaalberekening --- 66 # Prismant: P.I=81, P.IV=82/83/89/919/920/930 67 # RGS: P.I=WOmz/WRev/WRvi/WRgr/WWvv/WNoa/WLbe/WBat, P.II = WWiv minus WWivGvp, III=WWivGvp, P.IV=WOvb 68 # voor de som P volstaat het om WWiv hier te zetten want zo wordt WWivGvp ook maar 1x geteld. 69 BIND( 70 IF( 71 STRSTARTS(?rubriekCode, "81") || 72 STRSTARTS(?rubriekCode, "82") || 73 STRSTARTS(?rubriekCode, "83") || 74 STRSTARTS(?rubriekCode, "89") || 75 STRSTARTS(?rubriekCode, "919") || 76 STRSTARTS(?rubriekCode, "920") || 77 STRSTARTS(?rubriekCode, "930") || 78 STRSTARTS(?rubriekCode, "WOmz") || 79 STRSTARTS(?rubriekCode, "WRev") || 80 STRSTARTS(?rubriekCode, "WRvi") || 81 STRSTARTS(?rubriekCode, "WRgr") || 82 STRSTARTS(?rubriekCode, "WWvv") || 83 STRSTARTS(?rubriekCode, "WNoa") || 84 STRSTARTS(?rubriekCode, "WLbe") || 85 STRSTARTS(?rubriekCode, "WBat") || 86 STRSTARTS(?rubriekCode, "WWiv") || 87 STRSTARTS(?rubriekCode, "WOvb"), 88 ?geld_bedrag, 0) AS ?p_bedrag 89 ) 90 91 # --- Q: Diverse kostenrubrieken --- 92 # Q.I RGS: WKpr minus WKprKuw 93 # Q.II: 417/418 (Kosten uitbesteed werk en andere externe kosten), RGS: WKprKuw 94 # Q.III: 411-419 (Lonen en salarissen), RGS: WPer minus WPerSol minus WPerPen 95 # Q.IV: 420/4221/4223-4225/4229 (Sociale lasten), RGS: WPerSol 96 # Q.V: 4226 (Afschrijvingen), RGS: WPerPen 97 # Q.VI: 480-484 (Afschrijvingen op immateriële vaste activa en materiële vaste activa), RGS: WAfs 98 # Q.VII: RGS: WWvi 99 # Q.VIII: RGS: WBwv 100 # Q.IX: 423/43-47/486/489/905/911-915/921/931 (Overige bedrijfskosten), RGS: WBed/WOok/WKol/WVkf/WAkf 101 # ook hier volstaat het voor de som van Q om alleen WPer te noemen zodat WPerSol en WPerPen niet dubbel geteld worden 102 BIND( 103 IF( 104 STRSTARTS(?rubriekCode, "417") || 105 STRSTARTS(?rubriekCode, "418") || 106 STRSTARTS(?rubriekCode, "411") || 107 STRSTARTS(?rubriekCode, "412") || 108 STRSTARTS(?rubriekCode, "413") || 109 STRSTARTS(?rubriekCode, "414") || 110 STRSTARTS(?rubriekCode, "415") || 111 STRSTARTS(?rubriekCode, "416") || 112 STRSTARTS(?rubriekCode, "419") || 113 STRSTARTS(?rubriekCode, "420") || 114 STRSTARTS(?rubriekCode, "4221") || 115 STRSTARTS(?rubriekCode, "4223") || 116 STRSTARTS(?rubriekCode, "4224") || 117 STRSTARTS(?rubriekCode, "4225") || 118 STRSTARTS(?rubriekCode, "4229") || 119 STRSTARTS(?rubriekCode, "4226") || 120 STRSTARTS(?rubriekCode, "480") || 121 STRSTARTS(?rubriekCode, "481") || 122 STRSTARTS(?rubriekCode, "482") || 123 STRSTARTS(?rubriekCode, "483") || 124 STRSTARTS(?rubriekCode, "484") || 125 STRSTARTS(?rubriekCode, "423") || 126 STRSTARTS(?rubriekCode, "43") || 127 STRSTARTS(?rubriekCode, "44") || 128 STRSTARTS(?rubriekCode, "45") || 129 STRSTARTS(?rubriekCode, "46") || 130 STRSTARTS(?rubriekCode, "47") || 131 STRSTARTS(?rubriekCode, "486") || 132 STRSTARTS(?rubriekCode, "489") || 133 STRSTARTS(?rubriekCode, "905") || 134 STRSTARTS(?rubriekCode, "911") || 135 STRSTARTS(?rubriekCode, "912") || 136 STRSTARTS(?rubriekCode, "913") || 137 STRSTARTS(?rubriekCode, "914") || 138 STRSTARTS(?rubriekCode, "915") || 139 STRSTARTS(?rubriekCode, "921") || 140 STRSTARTS(?rubriekCode, "931") || 141 STRSTARTS(?rubriekCode, "WKpr") || 142 STRSTARTS(?rubriekCode, "WPer") || 143 STRSTARTS(?rubriekCode, "WAfs") || 144 STRSTARTS(?rubriekCode, "WWvi") || 145 STRSTARTS(?rubriekCode, "WBwv") || 146 STRSTARTS(?rubriekCode, "WBed") || 147 STRSTARTS(?rubriekCode, "WOok") || 148 STRSTARTS(?rubriekCode, "WKol") || 149 STRSTARTS(?rubriekCode, "WVkf") || 150 STRSTARTS(?rubriekCode, "WAkf"), 151 ?geld_bedrag, 0) AS ?q_bedrag 152 ) 153 154 # --- R: Resultaat voor belastingen --- 155 # Prismant: R.I=904, R.II=900, R.III=903, R.IV=485/901 156 # RGS: R.I=WOvt, R.II=WFbeRlm, R.III=WWfa/WVhe, R.IV=WFbe minus WFbeRlm 157 # voor de som R volstaat het om WFbe hier te zetten want zo wordt WFbeRlm ook maar 1x geteld. 158 BIND( 159 IF( 160 STRSTARTS(?rubriekCode, "904") || 161 STRSTARTS(?rubriekCode, "900") || 162 STRSTARTS(?rubriekCode, "903") || 163 STRSTARTS(?rubriekCode, "485") || 164 STRSTARTS(?rubriekCode, "901") || 165 STRSTARTS(?rubriekCode, "WOvt") || 166 STRSTARTS(?rubriekCode, "WWfa") || 167 STRSTARTS(?rubriekCode, "WVhe") || 168 STRSTARTS(?rubriekCode, "WFbe"), 169 ?geld_bedrag, 0) AS ?r_bedrag 170 ) 171 172 # --- S: Belastingen --- 173 # Prismant: S.II=902 174 # RGS: S.I=WBel, S.II=WRed/WAad 175 BIND( 176 IF( 177 STRSTARTS(?rubriekCode, "902") || 178 STRSTARTS(?rubriekCode, "WBel") || 179 STRSTARTS(?rubriekCode, "WRed") || 180 STRSTARTS(?rubriekCode, "WAad"), 181 ?geld_bedrag, 0) AS ?s_bedrag 182 ) 183 184 185 # --- Data detection flags: 1 als de grootboekpost bij het component hoort --- 186 BIND(IF( 187 STRSTARTS(?rubriekCode, "81") || STRSTARTS(?rubriekCode, "82") || STRSTARTS(?rubriekCode, "83") || 188 STRSTARTS(?rubriekCode, "89") || STRSTARTS(?rubriekCode, "919") || STRSTARTS(?rubriekCode, "920") || 189 STRSTARTS(?rubriekCode, "930") || STRSTARTS(?rubriekCode, "WOmz") || STRSTARTS(?rubriekCode, "WRev") || 190 STRSTARTS(?rubriekCode, "WRvi") || STRSTARTS(?rubriekCode, "WRgr") || STRSTARTS(?rubriekCode, "WWvv") || 191 STRSTARTS(?rubriekCode, "WNoa") || STRSTARTS(?rubriekCode, "WLbe") || STRSTARTS(?rubriekCode, "WBat") || 192 STRSTARTS(?rubriekCode, "WWiv") || STRSTARTS(?rubriekCode, "WOvb"), 193 1, 0) AS ?p_flag) 194 BIND(IF( 195 STRSTARTS(?rubriekCode, "417") || STRSTARTS(?rubriekCode, "418") || 196 STRSTARTS(?rubriekCode, "411") || STRSTARTS(?rubriekCode, "412") || STRSTARTS(?rubriekCode, "413") || 197 STRSTARTS(?rubriekCode, "414") || STRSTARTS(?rubriekCode, "415") || STRSTARTS(?rubriekCode, "416") || 198 STRSTARTS(?rubriekCode, "419") || STRSTARTS(?rubriekCode, "420") || STRSTARTS(?rubriekCode, "4221") || 199 STRSTARTS(?rubriekCode, "4223") || STRSTARTS(?rubriekCode, "4224") || STRSTARTS(?rubriekCode, "4225") || 200 STRSTARTS(?rubriekCode, "4229") || STRSTARTS(?rubriekCode, "4226") || 201 STRSTARTS(?rubriekCode, "480") || STRSTARTS(?rubriekCode, "481") || STRSTARTS(?rubriekCode, "482") || 202 STRSTARTS(?rubriekCode, "483") || STRSTARTS(?rubriekCode, "484") || 203 STRSTARTS(?rubriekCode, "423") || STRSTARTS(?rubriekCode, "43") || STRSTARTS(?rubriekCode, "44") || 204 STRSTARTS(?rubriekCode, "45") || STRSTARTS(?rubriekCode, "46") || STRSTARTS(?rubriekCode, "47") || 205 STRSTARTS(?rubriekCode, "486") || STRSTARTS(?rubriekCode, "489") || STRSTARTS(?rubriekCode, "905") || 206 STRSTARTS(?rubriekCode, "911") || STRSTARTS(?rubriekCode, "912") || STRSTARTS(?rubriekCode, "913") || 207 STRSTARTS(?rubriekCode, "914") || STRSTARTS(?rubriekCode, "915") || STRSTARTS(?rubriekCode, "921") || 208 STRSTARTS(?rubriekCode, "931") || STRSTARTS(?rubriekCode, "WKpr") || STRSTARTS(?rubriekCode, "WPer") || 209 STRSTARTS(?rubriekCode, "WAfs") || STRSTARTS(?rubriekCode, "WWvi") || STRSTARTS(?rubriekCode, "WBwv") || 210 STRSTARTS(?rubriekCode, "WBed") || STRSTARTS(?rubriekCode, "WOok") || STRSTARTS(?rubriekCode, "WKol") || 211 STRSTARTS(?rubriekCode, "WVkf") || STRSTARTS(?rubriekCode, "WAkf"), 212 1, 0) AS ?q_flag) 213 BIND(IF( 214 STRSTARTS(?rubriekCode, "904") || 215 STRSTARTS(?rubriekCode, "900") || 216 STRSTARTS(?rubriekCode, "903") || 217 STRSTARTS(?rubriekCode, "485") || 218 STRSTARTS(?rubriekCode, "901") || 219 STRSTARTS(?rubriekCode, "WOvt") || 220 STRSTARTS(?rubriekCode, "WWfa") || 221 STRSTARTS(?rubriekCode, "WVhe") || 222 STRSTARTS(?rubriekCode, "WFbe"), 223 1, 0) AS ?r_flag) 224 BIND(IF( 225 STRSTARTS(?rubriekCode, "WBel") || 226 STRSTARTS(?rubriekCode, "902") || 227 STRSTARTS(?rubriekCode, "WRed") || 228 STRSTARTS(?rubriekCode, "WAad"), 229 1, 0) AS ?s_flag) 230 231 } 232 } 233 234 # Genereer eindtotalen met berekende formules 235 VALUES (?eindtotaal_type ?jaarrekeningpost) { 236 (1 "P Som der bedrijfsopbrengsten") # P totaal 237 (2 "Q Som der bedrijfslasten") # Q totaal 238 (3 "R Resultaat voor belastingen") # P + Q + R 239 (4 "S Resultaat na belastingen") # R + S 240 } 241 242 # Tel de bedragen op, als er geen data is gebruik dan nul 243 BIND( 244 IF(?eindtotaal_type = 1, COALESCE(?p_totaal, 0), 245 IF(?eindtotaal_type = 2, COALESCE(?q_totaal, 0), 246 IF(?eindtotaal_type = 3, COALESCE(?p_totaal, 0) + COALESCE(?q_totaal, 0) + COALESCE(?r_totaal, 0), 247 IF(?eindtotaal_type = 4, COALESCE(?p_totaal, 0) + COALESCE(?q_totaal, 0) + COALESCE(?r_totaal, 0) + COALESCE(?s_totaal, 0), 248 0)))) AS ?bedrag_rubriek 249 ) 250 251 BIND( 252 IF(?eindtotaal_type = 1, ?p_has_data, 253 IF(?eindtotaal_type = 2, ?q_has_data, 254 IF(?eindtotaal_type = 3, ?p_has_data + ?q_has_data + ?r_has_data, 255 IF(?eindtotaal_type = 4, ?p_has_data + ?q_has_data + ?r_has_data + ?s_has_data, 256 0)))) AS ?heeftData 257 ) 258 259 } 260 UNION 261{ 262 # ======================================================================== 263 # DEEL 2: Individuele jaarrekeningposten uit grootboekdata 264 ## Inclusief een oplossing om lege posten als niet bestaand weer te geven. 265 ## In dit geval via heeftData = 0 en dan in de buitenste select dit weer te geven met een string 266 # Werkt voor Prismant én RGS 267 # ======================================================================== 268 { 269 SELECT 270 ?jaarrekeningpost 271 ?bedrag_rubriek 272 ?heeftData 273 WHERE { 274 { 275 SELECT 276 (SUM(?p_i_bedrag) AS ?p_i_totaal) 277 (SUM(?p_ii_plus_bedrag) AS ?p_ii_plus_totaal) 278 (SUM(?p_ii_min_bedrag) AS ?p_ii_min_totaal) 279 (SUM(?p_iii_bedrag) AS ?p_iii_totaal) 280 (SUM(?p_iv_bedrag) AS ?p_iv_totaal) 281 282 (SUM(?q_i_plus_bedrag) AS ?q_i_plus_totaal) 283 (SUM(?q_i_min_bedrag) AS ?q_i_min_totaal) 284 (SUM(?q_ii_bedrag) AS ?q_ii_totaal) 285 (SUM(?q_iii_bedrag) AS ?q_iii_totaal) 286 (SUM(?q_iii_min_bedrag) AS ?q_iii_min_totaal) 287 (SUM(?q_iv_bedrag) AS ?q_iv_totaal) 288 (SUM(?q_v_bedrag) AS ?q_v_totaal) 289 (SUM(?q_vi_bedrag) AS ?q_vi_totaal) 290 (SUM(?q_vii_bedrag) AS ?q_vii_totaal) 291 (SUM(?q_viii_bedrag) AS ?q_viii_totaal) 292 (SUM(?q_ix_bedrag) AS ?q_ix_totaal) 293 294 (SUM(?r_i_bedrag) AS ?r_i_totaal) 295 (SUM(?r_ii_bedrag) AS ?r_ii_totaal) 296 (SUM(?r_iii_bedrag) AS ?r_iii_totaal) 297 (SUM(?r_iv_plus_bedrag) AS ?r_iv_plus_totaal) 298 (SUM(?r_iv_min_bedrag) AS ?r_iv_min_totaal) 299 300 (SUM(?s_i_bedrag) AS ?s_i_totaal) 301 (SUM(?s_ii_bedrag) AS ?s_ii_totaal) 302 303 (SUM(?p_i_flag) AS ?p_i_has_data) 304 (SUM(?p_ii_flag) AS ?p_ii_has_data) 305 (SUM(?p_iii_flag) AS ?p_iii_has_data) 306 (SUM(?p_iv_flag) AS ?p_iv_has_data) 307 (SUM(?q_i_flag) AS ?q_i_has_data) 308 (SUM(?q_ii_flag) AS ?q_ii_has_data) 309 (SUM(?q_iii_flag) AS ?q_iii_has_data) 310 (SUM(?q_iv_flag) AS ?q_iv_has_data) 311 (SUM(?q_v_flag) AS ?q_v_has_data) 312 (SUM(?q_vi_flag) AS ?q_vi_has_data) 313 (SUM(?q_vii_flag) AS ?q_vii_has_data) 314 (SUM(?q_viii_flag) AS ?q_viii_has_data) 315 (SUM(?q_ix_flag) AS ?q_ix_has_data) 316 (SUM(?r_i_flag) AS ?r_i_has_data) 317 (SUM(?r_ii_flag) AS ?r_ii_has_data) 318 (SUM(?r_iii_flag) AS ?r_iii_has_data) 319 (SUM(?r_iv_flag) AS ?r_iv_has_data) 320 (SUM(?s_i_flag) AS ?s_i_has_data) 321 (SUM(?s_ii_flag) AS ?s_ii_has_data) 322 WHERE { 323 #BIND("2024-01-01"^^xsd:date AS ?startperiode) 324 #BIND("2024-12-31"^^xsd:date AS ?eindperiode) 325 326 ?grootboek_post a onz-fin:Grootboekpost ; 327 onz-g:partOf ?rubriek ; 328 onz-g:hasDate ?datum ; 329 onz-fin:heeftGeldBedrag ?geld_bedrag . 330 331 # Match directe ouder: Grootboekrekening (RGS) of Grootboekrubriek (Prismant) 332 { 333 { ?rubriek a onz-fin:Grootboekrekening } 334 UNION 335 { ?rubriek a onz-fin:Grootboekrubriek } 336 } 337 # Anti-dubbeltelling: houd alleen het bladniveau (geen transitive ancestors) 338 FILTER NOT EXISTS { 339 ?grootboek_post onz-g:partOf ?child . 340 ?child onz-g:partOf ?rubriek . 341 FILTER(?child != ?rubriek) 342 { { ?child a onz-fin:Grootboekrekening } UNION { ?child a onz-fin:Grootboekrubriek } } 343 } 344 FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:))) 345 BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode) 346 347 FILTER (?datum >= ?startperiode && ?datum <= ?eindperiode) 348 349 # ----------------------------- 350 # P 351 # ----------------------------- 352 BIND( 353 IF( 354 STRSTARTS(?rubriekCode, "81") || 355 STRSTARTS(?rubriekCode, "WOmz") || 356 STRSTARTS(?rubriekCode, "WRev") || 357 STRSTARTS(?rubriekCode, "WRvi") || 358 STRSTARTS(?rubriekCode, "WRgr") || 359 STRSTARTS(?rubriekCode, "WWvv") || 360 STRSTARTS(?rubriekCode, "WNoa") || 361 STRSTARTS(?rubriekCode, "WLbe") || 362 STRSTARTS(?rubriekCode, "WBat"), 363 ?geld_bedrag, 0 364 ) AS ?p_i_bedrag 365 ) 366 367 BIND(IF(STRSTARTS(?rubriekCode, "WWiv"), ?geld_bedrag, 0) AS ?p_ii_plus_bedrag) 368 BIND(IF(STRSTARTS(?rubriekCode, "WWivGpv"), ?geld_bedrag, 0) AS ?p_ii_min_bedrag) 369 370 BIND(IF(STRSTARTS(?rubriekCode, "WWivGpv"), ?geld_bedrag, 0) AS ?p_iii_bedrag) 371 372 BIND( 373 IF( 374 STRSTARTS(?rubriekCode, "82") || 375 STRSTARTS(?rubriekCode, "83") || 376 STRSTARTS(?rubriekCode, "89") || 377 STRSTARTS(?rubriekCode, "919") || 378 STRSTARTS(?rubriekCode, "920") || 379 STRSTARTS(?rubriekCode, "930") || 380 STRSTARTS(?rubriekCode, "WOvb"), 381 ?geld_bedrag, 0 382 ) AS ?p_iv_bedrag 383 ) 384 385 # ----------------------------- 386 # Q 387 # ----------------------------- 388 BIND(IF(STRSTARTS(?rubriekCode, "WKpr"), ?geld_bedrag, 0) AS ?q_i_plus_bedrag) 389 BIND(IF(STRSTARTS(?rubriekCode, "WKprKuw"), ?geld_bedrag, 0) AS ?q_i_min_bedrag) 390 391 BIND( 392 IF( 393 STRSTARTS(?rubriekCode, "417") || 394 STRSTARTS(?rubriekCode, "418") || 395 STRSTARTS(?rubriekCode, "WKprKuw"), 396 ?geld_bedrag, 0 397 ) AS ?q_ii_bedrag 398 ) 399 400 BIND( 401 IF( 402 STRSTARTS(?rubriekCode, "411") || 403 STRSTARTS(?rubriekCode, "412") || 404 STRSTARTS(?rubriekCode, "413") || 405 STRSTARTS(?rubriekCode, "414") || 406 STRSTARTS(?rubriekCode, "415") || 407 STRSTARTS(?rubriekCode, "416") || 408 STRSTARTS(?rubriekCode, "419") || 409 STRSTARTS(?rubriekCode, "WPer"), 410 ?geld_bedrag, 0 411 ) AS ?q_iii_bedrag 412 ) 413 414 BIND( 415 IF(STRSTARTS(?rubriekCode, "WPerSol") || 416 STRSTARTS(?rubriekCode, "WPerPen") , ?geld_bedrag, 0) 417 AS ?q_iii_min_bedrag 418 ) 419 420 421 BIND( 422 IF( 423 STRSTARTS(?rubriekCode, "420") || 424 STRSTARTS(?rubriekCode, "4221") || 425 STRSTARTS(?rubriekCode, "4223") || 426 STRSTARTS(?rubriekCode, "4224") || 427 STRSTARTS(?rubriekCode, "4225") || 428 STRSTARTS(?rubriekCode, "4229") || 429 STRSTARTS(?rubriekCode, "WPerSol"), 430 ?geld_bedrag, 0 431 ) AS ?q_iv_bedrag 432 ) 433 434 435 BIND( 436 IF( 437 STRSTARTS(?rubriekCode, "4226") || 438 STRSTARTS(?rubriekCode, "WPerPen"), 439 ?geld_bedrag, 0 440 ) AS ?q_v_bedrag 441 ) 442 443 444 BIND( 445 IF( 446 STRSTARTS(?rubriekCode, "480") || 447 STRSTARTS(?rubriekCode, "481") || 448 STRSTARTS(?rubriekCode, "482") || 449 STRSTARTS(?rubriekCode, "483") || 450 STRSTARTS(?rubriekCode, "484") || 451 STRSTARTS(?rubriekCode, "WAfs"), 452 ?geld_bedrag, 0 453 ) AS ?q_vi_bedrag 454 ) 455 456 BIND(IF(STRSTARTS(?rubriekCode, "WWvi"), ?geld_bedrag, 0) AS ?q_vii_bedrag) 457 BIND(IF(STRSTARTS(?rubriekCode, "WBwv"), ?geld_bedrag, 0) AS ?q_viii_bedrag) 458 459 BIND( 460 IF( 461 STRSTARTS(?rubriekCode, "423") || 462 STRSTARTS(?rubriekCode, "43") || 463 STRSTARTS(?rubriekCode, "44") || 464 STRSTARTS(?rubriekCode, "45") || 465 STRSTARTS(?rubriekCode, "46") || 466 STRSTARTS(?rubriekCode, "47") || 467 STRSTARTS(?rubriekCode, "486") || 468 STRSTARTS(?rubriekCode, "489") || 469 STRSTARTS(?rubriekCode, "905") || 470 STRSTARTS(?rubriekCode, "911") || 471 STRSTARTS(?rubriekCode, "912") || 472 STRSTARTS(?rubriekCode, "913") || 473 STRSTARTS(?rubriekCode, "914") || 474 STRSTARTS(?rubriekCode, "915") || 475 STRSTARTS(?rubriekCode, "921") || 476 STRSTARTS(?rubriekCode, "931") || 477 STRSTARTS(?rubriekCode, "WBed") || 478 STRSTARTS(?rubriekCode, "WOok") || 479 STRSTARTS(?rubriekCode, "WKol") || 480 STRSTARTS(?rubriekCode, "WVkf") || 481 STRSTARTS(?rubriekCode, "WAkf"), 482 ?geld_bedrag, 0 483 ) AS ?q_ix_bedrag 484 ) 485 486 # ----------------------------- 487 # R 488 # ----------------------------- 489 BIND( 490 IF( 491 STRSTARTS(?rubriekCode, "904") || 492 STRSTARTS(?rubriekCode, "WOvt"), 493 ?geld_bedrag, 0 494 ) AS ?r_i_bedrag 495 ) 496 497 BIND( 498 IF( 499 STRSTARTS(?rubriekCode, "900") || 500 STRSTARTS(?rubriekCode, "WFbeRlm"), 501 ?geld_bedrag, 0 502 ) AS ?r_ii_bedrag 503 ) 504 505 BIND( 506 IF( 507 STRSTARTS(?rubriekCode, "903") || 508 STRSTARTS(?rubriekCode, "WWfa") || 509 STRSTARTS(?rubriekCode, "WVhe"), 510 ?geld_bedrag, 0 511 ) AS ?r_iii_bedrag 512 ) 513 514 BIND(IF(STRSTARTS(?rubriekCode, "485") || STRSTARTS(?rubriekCode, "901") || STRSTARTS(?rubriekCode, "WFbe"), ?geld_bedrag, 0) AS ?r_iv_plus_bedrag) 515 BIND(IF(STRSTARTS(?rubriekCode, "WFbeRlm"), ?geld_bedrag, 0) AS ?r_iv_min_bedrag) 516 517 # ----------------------------- 518 # S 519 # ----------------------------- 520 BIND(IF(STRSTARTS(?rubriekCode, "WBel"), ?geld_bedrag, 0) AS ?s_i_bedrag) 521 522 BIND( 523 IF( 524 STRSTARTS(?rubriekCode, "902") || 525 STRSTARTS(?rubriekCode, "WRed") || 526 STRSTARTS(?rubriekCode, "WAad"), 527 ?geld_bedrag, 0 528 ) AS ?s_ii_bedrag 529 ) 530 531 # --- Data detection flags: 1 als de grootboekpost bij het component hoort --- 532 BIND(IF( 533 STRSTARTS(?rubriekCode, "81") || STRSTARTS(?rubriekCode, "WOmz") || 534 STRSTARTS(?rubriekCode, "WRev") || STRSTARTS(?rubriekCode, "WRvi") || 535 STRSTARTS(?rubriekCode, "WRgr") || STRSTARTS(?rubriekCode, "WWvv") || 536 STRSTARTS(?rubriekCode, "WNoa") || STRSTARTS(?rubriekCode, "WLbe") || 537 STRSTARTS(?rubriekCode, "WBat"), 538 1, 0) AS ?p_i_flag) 539 BIND(IF(STRSTARTS(?rubriekCode, "WWiv"), 1, 0) AS ?p_ii_flag) 540 BIND(IF(STRSTARTS(?rubriekCode, "WWivGpv"), 1, 0) AS ?p_iii_flag) 541 BIND(IF( 542 STRSTARTS(?rubriekCode, "82") || STRSTARTS(?rubriekCode, "83") || 543 STRSTARTS(?rubriekCode, "89") || STRSTARTS(?rubriekCode, "919") || 544 STRSTARTS(?rubriekCode, "920") || STRSTARTS(?rubriekCode, "930") || 545 STRSTARTS(?rubriekCode, "WOvb"), 546 1, 0) AS ?p_iv_flag) 547 BIND(IF(STRSTARTS(?rubriekCode, "WKpr"), 1, 0) AS ?q_i_flag) 548 BIND(IF( 549 STRSTARTS(?rubriekCode, "417") || STRSTARTS(?rubriekCode, "418") || 550 STRSTARTS(?rubriekCode, "WKprKuw"), 551 1, 0) AS ?q_ii_flag) 552 BIND(IF( 553 STRSTARTS(?rubriekCode, "411") || STRSTARTS(?rubriekCode, "412") || 554 STRSTARTS(?rubriekCode, "413") || STRSTARTS(?rubriekCode, "414") || 555 STRSTARTS(?rubriekCode, "415") || STRSTARTS(?rubriekCode, "416") || 556 STRSTARTS(?rubriekCode, "419") || STRSTARTS(?rubriekCode, "WPer"), 557 1, 0) AS ?q_iii_flag) 558 BIND(IF( 559 STRSTARTS(?rubriekCode, "420") || STRSTARTS(?rubriekCode, "4221") || 560 STRSTARTS(?rubriekCode, "4223") || STRSTARTS(?rubriekCode, "4224") || 561 STRSTARTS(?rubriekCode, "4225") || STRSTARTS(?rubriekCode, "4229") || 562 STRSTARTS(?rubriekCode, "WPerSol"), 563 1, 0) AS ?q_iv_flag) 564 BIND(IF( 565 STRSTARTS(?rubriekCode, "4226") || STRSTARTS(?rubriekCode, "WPerPen"), 566 1, 0) AS ?q_v_flag) 567 BIND(IF( 568 STRSTARTS(?rubriekCode, "480") || STRSTARTS(?rubriekCode, "481") || 569 STRSTARTS(?rubriekCode, "482") || STRSTARTS(?rubriekCode, "483") || 570 STRSTARTS(?rubriekCode, "484") || STRSTARTS(?rubriekCode, "WAfs"), 571 1, 0) AS ?q_vi_flag) 572 BIND(IF(STRSTARTS(?rubriekCode, "WWvi"), 1, 0) AS ?q_vii_flag) 573 BIND(IF(STRSTARTS(?rubriekCode, "WBwv"), 1, 0) AS ?q_viii_flag) 574 BIND(IF( 575 STRSTARTS(?rubriekCode, "423") || STRSTARTS(?rubriekCode, "43") || 576 STRSTARTS(?rubriekCode, "44") || STRSTARTS(?rubriekCode, "45") || 577 STRSTARTS(?rubriekCode, "46") || STRSTARTS(?rubriekCode, "47") || 578 STRSTARTS(?rubriekCode, "486") || STRSTARTS(?rubriekCode, "489") || 579 STRSTARTS(?rubriekCode, "905") || STRSTARTS(?rubriekCode, "911") || 580 STRSTARTS(?rubriekCode, "912") || STRSTARTS(?rubriekCode, "913") || 581 STRSTARTS(?rubriekCode, "914") || STRSTARTS(?rubriekCode, "915") || 582 STRSTARTS(?rubriekCode, "921") || STRSTARTS(?rubriekCode, "931") || 583 STRSTARTS(?rubriekCode, "WBed") || STRSTARTS(?rubriekCode, "WOok") || 584 STRSTARTS(?rubriekCode, "WKol") || STRSTARTS(?rubriekCode, "WVkf") || 585 STRSTARTS(?rubriekCode, "WAkf"), 586 1, 0) AS ?q_ix_flag) 587 BIND(IF(STRSTARTS(?rubriekCode, "904") || STRSTARTS(?rubriekCode, "WOvt"), 1, 0) AS ?r_i_flag) 588 BIND(IF(STRSTARTS(?rubriekCode, "900") || STRSTARTS(?rubriekCode, "WFbeRlm"), 1, 0) AS ?r_ii_flag) 589 BIND(IF(STRSTARTS(?rubriekCode, "903") || STRSTARTS(?rubriekCode, "WWfa") || STRSTARTS(?rubriekCode, "WVhe"), 1, 0) AS ?r_iii_flag) 590 BIND(IF(STRSTARTS(?rubriekCode, "485") || STRSTARTS(?rubriekCode, "901") || STRSTARTS(?rubriekCode, "WFbe"), 1, 0) AS ?r_iv_flag) 591 BIND(IF(STRSTARTS(?rubriekCode, "WBel"), 1, 0) AS ?s_i_flag) 592 BIND(IF(STRSTARTS(?rubriekCode, "902") || STRSTARTS(?rubriekCode, "WRed") || STRSTARTS(?rubriekCode, "WAad"), 1, 0) AS ?s_ii_flag) 593 } 594 } 595 596 VALUES (?detail_type ?jaarrekeningpost) { 597 (1 "P.I Netto omzet") 598 (2 "P.II Wijziging in voorraden gereed product en onderhanden werk ten opzichte van de voorafgaande balansdatum") 599 (3 "P.III Geactiveerde productie voor het eigen bedrijf") 600 (4 "P.IV Overige bedrijfsopbrengsten") 601 (5 "Q.I Kosten van grond- en hulpstoffen") 602 (6 "Q.II Kosten uitbesteed werk en andere externe kosten") 603 (7 "Q.III Lonen en salarissen") 604 (8 "Q.IV Sociale lasten") 605 (9 "Q.V Pensioenlasten") 606 (10 "Q.VI Afschrijvingen op immateriële vaste activa en materiële vaste activa") 607 (11 "Q.VII Overige waardevermindering immateriële vaste activa en materiële vaste activa") 608 (12 "Q.VIII Bijzondere waardevermindering van vlottende activa") 609 (13 "Q.IX Overige bedrijfskosten") 610 (14 "R.I Opbrengst van vorderingen die tot de vaste activa behoren en van effecten") 611 (15 "R.II Andere rentebaten en soortgelijke opbrengsten") 612 (16 "R.III Waardeverandering van vorderingen die tot de vaste activa behoren en van effecten") 613 (17 "R.IV Rentelasten en soortgelijke kosten") 614 (18 "S.I Belastingen") 615 (19 "S.II Aandeel in winst/verlies van ondernemingen waarin wordt deelgenomen") 616 } 617 618 BIND( 619 IF(?detail_type = 1, ?p_i_totaal, 620 IF(?detail_type = 2, ?p_ii_plus_totaal - ?p_ii_min_totaal, 621 IF(?detail_type = 3, ?p_iii_totaal, 622 IF(?detail_type = 4, ?p_iv_totaal, 623 IF(?detail_type = 5, ?q_i_plus_totaal - ?q_i_min_totaal, 624 IF(?detail_type = 6, ?q_ii_totaal, 625 IF(?detail_type = 7, ?q_iii_totaal - ?q_iii_min_totaal , 626 IF(?detail_type = 8, ?q_iv_totaal, 627 IF(?detail_type = 9, ?q_v_totaal, 628 IF(?detail_type = 10, ?q_vi_totaal, 629 IF(?detail_type = 11, ?q_vii_totaal, 630 IF(?detail_type = 12, ?q_viii_totaal, 631 IF(?detail_type = 13, ?q_ix_totaal, 632 IF(?detail_type = 14, ?r_i_totaal, 633 IF(?detail_type = 15, ?r_ii_totaal, 634 IF(?detail_type = 16, ?r_iii_totaal, 635 IF(?detail_type = 17, ?r_iv_plus_totaal - ?r_iv_min_totaal, 636 IF(?detail_type = 18, ?s_i_totaal, 637 IF(?detail_type = 19, ?s_ii_totaal, 638 0 639 ))))))))))))))))))) 640 AS ?bedrag_rubriek 641 ) 642 643 # Bepaal of er data beschikbaar is voor de individuele jaarrekeningpost 644 BIND( 645 IF(?detail_type = 1, IF(?p_i_has_data > 0, 1, 0), 646 IF(?detail_type = 2, IF(?p_ii_has_data > 0, 1, 0), 647 IF(?detail_type = 3, IF(?p_iii_has_data > 0, 1, 0), 648 IF(?detail_type = 4, IF(?p_iv_has_data > 0, 1, 0), 649 IF(?detail_type = 5, IF(?q_i_has_data > 0, 1, 0), 650 IF(?detail_type = 6, IF(?q_ii_has_data > 0, 1, 0), 651 IF(?detail_type = 7, IF(?q_iii_has_data > 0, 1, 0), 652 IF(?detail_type = 8, IF(?q_iv_has_data > 0, 1, 0), 653 IF(?detail_type = 9, IF(?q_v_has_data > 0, 1, 0), 654 IF(?detail_type = 10, IF(?q_vi_has_data > 0, 1, 0), 655 IF(?detail_type = 11, IF(?q_vii_has_data > 0, 1, 0), 656 IF(?detail_type = 12, IF(?q_viii_has_data > 0, 1, 0), 657 IF(?detail_type = 13, IF(?q_ix_has_data > 0, 1, 0), 658 IF(?detail_type = 14, IF(?r_i_has_data > 0, 1, 0), 659 IF(?detail_type = 15, IF(?r_ii_has_data > 0, 1, 0), 660 IF(?detail_type = 16, IF(?r_iii_has_data > 0, 1, 0), 661 IF(?detail_type = 17, IF(?r_iv_has_data > 0, 1, 0), 662 IF(?detail_type = 18, IF(?s_i_has_data > 0, 1, 0), 663 IF(?detail_type = 19, IF(?s_ii_has_data > 0, 1, 0), 664 0))))))))))))))))))) 665 AS ?heeftData 666 ) 667 } 668 } 669} 670 671 UNION 672 { 673 # ======================================================================= 674 # DEEL 3: Volledige lijst van alle jaarrekeningposten 675 # ======================================================================= 676 BIND(0 AS ?bedrag_rubriek) 677 BIND(0 AS ?heeftData) # Tijdens initieren is het nog onduidelijk of er data voor de rubriek aanwezig is 678 VALUES ?jaarrekeningpost { 679 # P: Som der bedrijfsopbrengsten 680 "P.I Netto omzet" 681 "P.II Wijziging in voorraden gereed product en onderhanden werk ten opzichte van de voorafgaande balansdatum" 682 "P.III Geactiveerde productie voor het eigen bedrijf" 683 "P.IV Overige bedrijfsopbrengsten" 684 "P Som der bedrijfsopbrengsten" 685 686 # Q: Som der bedrijfslasten 687 "Q.I Kosten van grond- en hulpstoffen" 688 "Q.II Kosten uitbesteed werk en andere externe kosten" 689 "Q.III Lonen en salarissen" 690 "Q.IV Sociale lasten" 691 "Q.V Pensioenlasten" 692 "Q.VI Afschrijvingen op immateriële vaste activa en materiële vaste activa" 693 "Q.VII Overige waardevermindering immateriële vaste activa en materiële vaste activa" 694 "Q.VIII Bijzondere waardevermindering van vlottende activa" 695 "Q.IX Overige bedrijfskosten" 696 "Q Som der bedrijfslasten" 697 698 # R: Financiële baten en lasten 699 "R.I Opbrengst van vorderingen die tot de vaste activa behoren en van effecten" 700 "R.II Andere rentebaten en soortgelijke opbrengsten" 701 "R.III Waardeverandering van vorderingen die tot de vaste activa behoren en van effecten" 702 "R.IV Rentelasten en soortgelijke kosten" 703 "R Resultaat voor belastingen" 704 705 # S: Belastingen en resultaat deelnemingen 706 "S.I Belastingen" 707 "S.II Aandeel in winst/verlies van ondernemingen waarin wordt deelgenomen" 708 "S Resultaat na belastingen" 709 } 710 } } 711GROUP BY ?jaarrekeningpost 712ORDER BY ?jaarrekeningpost